This how-to assumes that you are using [ALSA](/index.php/ALSA "ALSA") and that your sound card is set up so you can listen to music. Known to work using this how-to is the Evolution MK-631 USB midi keyboard with SB Live! Value card. Execute these instructions as an unprivileged user unless otherwise noted.

## Contents

*   [1 Preliminary Testing](#Preliminary_Testing)
    *   [1.1 ALSA](#ALSA)
*   [2 Plugging the keyboard](#Plugging_the_keyboard)
*   [3 Verifying Events](#Verifying_Events)
*   [4 Playing](#Playing)
    *   [4.1 Hardware synthesizer](#Hardware_synthesizer)
    *   [4.2 Software synthesizer](#Software_synthesizer)
        *   [4.2.1 Qsynth](#Qsynth)
        *   [4.2.2 Qsynth using JACK](#Qsynth_using_JACK)

## Preliminary Testing

### ALSA

[Install](/index.php/Install "Install") the [alsa-utils](https://www.archlinux.org/packages/?name=alsa-utils) package.

Type `aseqdump`. It should output something like:

```
Waiting for data at port 128:0\. Press Ctrl+C to end.
Source_ Event_________________ Ch _Data__

```

Not much will show up there, so press Ctrl+C to quit the program.

## Plugging the keyboard

Now plug the keyboard in and turn it on. The keyboard should power up. Output of `lsusb` should contain:

```
Bus 002 Device 002: ID 0a4d:00a0 Evolution Electronics, Ltd

```

Output of `lsmod | grep usb` should contain the following modules:

```
usb_midi               25348  0
snd_usb_audio          70592  0
snd_usb_lib            16640  1 snd_usb_audio

```

Now type `aconnect -i` to list all MIDI input ports. The output should contain:

```
client 72: 'MK-361 USB MIDI keyboard' [type=kernel]
    0 'MK-361 USB MIDI keyboard MIDI 1'
```

The client number is probably going to be different though. Take note of it.

## Verifying Events

Type `aseqdump -p ##` where you should replace `##` with the client number of your keyboard. You should see:

```
 72:0   Active Sensing

```

popping out all the time. Pressing a key should produce:

```
 72:0   Note on                 0  65  94
 72:0   Note on                 0  65   0

```

Various other events (turning control knobs, changing channels, etc.) should register in the list. This is a handy way of ensuring that your keyboard is running properly.

To send MIDI events back to the keyboard or another MIDI output device, you can use run `aplaymidi -p ## midifile.mid` and specify a MIDI file.

## Playing

To hear a sound when you push a button on your keyboard, you need a synthesizer that converts the MIDI signal into audio.

Some soundcards have a built-in hardware synthesizer, but these are not common in modern sound cards, especially not in onboard sound cards. An easier option is a software synthesizer, which is just a program which you can load with you own instrument samples.

### Hardware synthesizer

Type `aconnect -o` to list all MIDI output ports. It depends a lot on your sound card. On SB Live! Value, you get the following output:

```
client 64: 'EMU10K1 MPU-401 (UART)' [type=kernel]
    0 'EMU10K1 MPU-401 (UART)'
client 65: 'Emu10k1 WaveTable' [type=kernel]
    0 'Emu10k1 Port 0  '
    1 'Emu10k1 Port 1  '
    2 'Emu10k1 Port 2  '
    3 'Emu10k1 Port 3  '
```

Here client 65 is the actual MIDI synthesizer. Assuming the soundcard is [set up](/index.php/SB_Live!_Midi "SB Live! Midi") properly, you should be able to **route** the output of the keyboard to the MIDI synthesizer. Assuming *out* is the output client number (65 in our example) and *in* is the input client number (72 in our example), type `aconnect *in* *out*`. Now you can play your keyboard via the MIDI output of your sound card.

### Software synthesizer

#### Qsynth

1.  Install [qsynth](https://www.archlinux.org/packages/?name=qsynth).
2.  Start QSynth and go to **Setup**, where you need to load soundfont in SF2 format. You can get free SoundFonts from [fluidplug-git](https://aur.archlinux.org/packages/fluidplug-git/), or from [http://soundfonts.narod.ru/](http://soundfonts.narod.ru/) (in Russian). When QSynth asks you to restart the engine after loading the SoundFont, do so.
3.  Type `aconnect -o` to list all MIDI output ports. Find the one that contains `FLUID Synth` and note the client number.
4.  Type `aconnect -i` to list all MIDI input ports. Note the Keyboard client number.
5.  Assuming *out* is the output client number and *in* is the input client number (72 in our example), type `aconnect *in* *out*`. Now you can play your keyboard and QSynth should produce sounds.

**Note:** You need to run `aconnect *in* *out*` each time you restart Qsynth or change the instrument/SoundFont.

**Note:** Qsynth default audio driver is set to jack. To use alsa run : qsynth -a alsa

#### Qsynth using JACK

1.  We need to install [qsynth](https://www.archlinux.org/packages/?name=qsynth), [jack](/index.php/Jack "Jack"), [qjackctl](https://www.archlinux.org/packages/?name=qjackctl)
2.  Launch qjackctl and check the settings:

```
 Server Path: jackd
 Driver: alsa
 Realtime=enable; Priority:0
 Frames/Period:512
 Soft Mode=enable; Periods/Buffer:2
 Rest of parameters=disable(by default)
 Dither: None
 Audio: Duplex

```

1.  Start jackd using qjackctl (the **Play** button)
2.  Connect your USB keyboard
3.  Start QSynth and go to **Setup**, where you need to load soundfont in SF2 format. You can get free SoundFonts from [http://soundfonts.narod.ru/](http://soundfonts.narod.ru/) (in Russian). When QSynth asks you to restart the engine after loading the SoundFont, do so.
4.  Go to qjackctl, click **Connect** and choose the ALSA tab. On the left side you will see connected MIDI keyboard, on the left side - QSynth. Choose MIDI keyboard and QSynth, and click **Connect**.